import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);

const store = new Vuex.Store({
  // 新建state 用于存储数据  相当于组件中的data
  state:{
    count:1,
  },
  //改变state中的数据会触发getters中的方法   类似于vue中的计算属性
  getters:{
    computedCount:(state)=>{
      return state.count*2
    }
  },
  /*actions类似于mutations，不同在于
      actions提交的是mutations，而不是直接变更状态
      actions可以包含任意异步操作
  * */
  actions:{
    incMutationsCount(context){
      console.log('actions');
      context.commit('incCount'); //执行mutations中的incCount方法，改变state中的count
    }
  },
  // 新建mutations 用于放方法 方法主要用于改变state中的数据  相当于组件中的methods
  mutations:{
    incCount(){
      ++this.state.count;
    }
  }
});

// 把store暴露出去
export default store;
